home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
-
-
-
- TOOLS FOR C
- Application Development Package
- USERS MANUAL
-
-
- Shareware Distribution Version 1.0
-
-
-
-
-
-
-
- This version of TOOLS FOR C and it's associated manuals and
- support files may be freely copied and distributed as long as
- it is distributed in it's entirety and no fees other than
- nominal handling fees are charged. The routines in this
- library are NOT Public Domain. This is copyrighted material.
- The intent behind distributing this version of TOOLS FOR C is
- to allow you to use the package on a trial basis and determine
- if it meets your needs. If you find yourself using this
- package, you MUST register by sending $45.00 to the address
- listed below. Upon receipt of your registration fee we will
- send you an expanded manual, compiled libraries for all of the
- memory models available with your compiler, and the complete
- source code to the library. In NO EVENT may you use any of the
- routines in TOOLS FOR C for commercial purposes until you
- register your copy. We feel that you will find the value of
- TOOLS FOR C far exceeds the registration fee and we at BP
- SOFTWARE SOLUTIONS, INC. thank you in advance for your
- support.
-
-
-
-
-
- BP Software Solutions, Inc.
- 642 N. Commodore Drive
- Plantation, Fl. 33325
-
-
-
-
-
- Copyright (C) 1987
- BP Software Solutions Inc.
- All Rights Reserved
-
-
-
-
-
-
-
-
-
-
-
-
- Table of Contents
-
-
-
-
-
- INTRODUCTION . . . . . . . . . . . . . . . 3
- The Manual. . . . . . . . . . . . . . 3
- Concerning Compiling. . . . . . . . . 3
-
- VIDEO . . . . . . . . . . . . . . . . . . 4
- Video Routines . . . . . . . . . . . 4
- Video Attributes . . . . . . . . . . 4
- Cursor Control . . . . . . . . . . . 5
- Character Output . . . . . . . . . . 5
- String Output . . . . . . . . . . . . 6
- Screen Scrolling . . . . . . . . . . 6
-
- KEYBOARD . . . . . . . . . . . . . . . . . 7
- Keyboard Routines . . . . . . . . . . 7
- KEY.H . . . . . . . . . . . . . . . . 7
-
- WINDOWS . . . . . . . . . . . . . . . . . 8
- Creating windows . . . . . . . . . . 8
- Menugen.Exe . . . . . . . . . . . . . 10
- Window Management . . . . . . . . . . 10
- Closing Windows . . . . . . . . . . . 11
-
- MENUS . . . . . . . . . . . . . . . . . . 13
- Creating Menus . . . . . . . . . . . 13
- Menugen . . . . . . . . . . . . . . . 13
- Menu Selections . . . . . . . . . . . 13
- Error Handling . . . . . . . . . . . 14
- menu_text() . . . . . . . . . . . . . 14
- Titling Menus . . . . . . . . . . . . 14
- Menu Structures . . . . . . . . . . . 15
-
- GLOBAL VARIABLES . . . . . . . . . . . . . 16
-
- INDEX . . . . . . . . . . . . . . . . . . 18
-
-
-
-
- page 3
- INTRODUCTION
-
-
- Introduction
-
- TOOLS FOR C provides a comprehensive library of tested C and
- assembler functions to complement the standard library provided
- with your C compiler. You will find routines for screen and
- keyboard I/O, window management, a menu system, string routines
- and more. Included in the shareware distribution version are
- compiled libraries for linking with the small memory models
- of Microsoft C (R) v4.0, Lattice C (R) v3.x, and Borland
- International's Turbo C (R) v 1.0. Upon receipt of your
- registration fee, we will send you the libraries for the all of
- the memory models supported by your compiler and the complete C
- and assembler source code. You will then be able to modify any
- of the routines which do not precisely meet your needs.
- Furthermore, you will be able to recompile the library using
- different optimization flags, different function naming
- conventions, or for that matter, a different compiler
- altogether.
-
- The Manual
-
- The manual is organized into chapters, each dealing with one
- subgroup of routines. The first chapter, video, describes the
- functions dealing with screen output. Keyboard deals with the
- key() function and the macro keystroke definitions provided with
- the package. The third and fourth chapters describe the many
- functions and capabilities of the window and menu management
- routines in TOOLS FOR C. A detailed explanation of each control
- structure is given.
-
- The large reference section details each function, giving
- specific calling requirements and examples. The function
- reference section is a comprehensive description of each Turbo
- Library routine. Each routine is listed with it's function
- name, synopsis, a detailed description, and return values if any.
-
- Concerning Compiling
-
- When we developed TOOLS FOR C we chose long, descriptive names
- for the functions. This avoids the cryptographer's delight that
- results from trying to name too many functions with too few
- characters. Therefore, when compiling programs to be linked with
- TOOLS FOR C you must be sure to use the compiler option
- activating long identifier names. In Lattice C (R) this is the
- -n flag, in Microsoft C (R) and Turbo C (R) long names are the
- default. The header file TOOLS4C.H should be included in all
- source code which uses TOOLS FOR C. MENU.H is necessary in any
- code which references the menu() function. KEY.H can be included
- as an aid in defining the codes returned by key(), but it's use
- is not required. The library does not replace any of the
- standard library functions, so link order is not important.
-
-
- page 4
- VIDEO
-
-
- Video Routines
-
- The video routines provided in the library allow direct hardware
- control of Color Graphic Adapters and Monochrome Adapters,
- bypassing most of the DOS and BIOS routines. This allows for
- much greater display speed and far more flexibility. Direct
- hardware control requires that the routines be informed of which
- adapter is installed. This is accomplished by calling the
- function "vid_type()" which sets a couple of global integer
- variables (_vid_buf and _vid_type). A hardware dependent
- routine can check these to tell which type of adapter is
- presently being used. This function must be called at least
- once before any of the video routines are called. If it is not,
- a monochrome adapter will be assumed. While direct hardware
- control is required for acceptable performance, it also
- unfortunately requires a high degree of hardware compatibility
- with IBM's CGA or Monochrome Adapter. Most PC compatible video
- boards do closely match one of these adapters so running
- applications developed using TOOLS FOR C on IBM compatible
- computers should present no problems. If you do experience
- difficulties, minor changes to the library, using the supplied
- source code, will probably solve your problem.
-
- As explained below, control of the video attributes is left
- entirely to you. In order to allow selection of monochrome or
- color attributes at run time, vid_type() sets a global variable
- "_color" to TRUE if the current video mode is 3 (80x25 color
- text). If the current video mode is 2 (80x25 B/W text) or 7
- (Mono) then "_color" defaults to FALSE. If the current video
- mode is not set to one of these values, vid_type() returns ERROR
- (-1) instead of OK (0). The return value should be checked as
- the TOOLS FOR C video routines are designed to operate only
- with the video mode set to one of the eighty column text modes
- (CO80, BW80 or MONO). If there is any question as to which mode
- the display is in, routines in the library allow you change it
- and then return it to the old value before exiting.
-
-
- Video Attributes
-
- Many of the routines require you to specify a video attribute.
- One of the basic decisions made during the design phase of the
- library was to not implement video attributes as global variables,
- but instead to require that they be passed each time as a
- parameter. Any additional work on the part of the programmer that
- this approach requires will certainly be repaid in program
- maintenance hours. Two global variables are provided which are
- set by the vid_type() routine which will allow you to determine
- which type of video adapter is installed and whether or not the
- color mode is set on a CGA in the event that you want to use
- attributes which are not compatible across all modes.
-
-
-
- Cursor Control page 5
-
- Two different sets of cursor control routines are included which
- provide essentially the same services but require or return
- different parameters. One set, curs() and get_curs(), specifies
- the cursor location as an encoded integer where the high eight
- bits defines the cursor row and the low eight bits defines the
- cursor column. The other set, cursor() and get_cursor(),
- requires two separate integer variables, one each for the row
- and column. To set the cursor location, these are passed as
- parameters, but since it is possible to return only one variable
- from a C routine, to determine the cursor location it is
- necessary to provide the address of two integer variables to
- get_cursor(). get_cursor() then stuffs these variables with the
- appropriate values.
-
- If it is only necessary to save and restore the cursor location,
- then get_curs() and curs() are much easier to use, but if you need
- to determine the row or column, or set the cursor to a specific
- location, then get_cursor() or cursor() will save some masking and
- bit-shuffling.
-
- Throughout the library, screen locations are defined in terms of
- (column, row) with the upper left corner of the screen defined as
- location (0,0). Columns are numbered from the left most column 0
- to the right most column 79 and rows are numbered from the top 0
- to the bottom 24. The lower right screen location is (79,24).
-
- Programming note: One way to remove the blinking cursor from
- the screen, is to call cursor() with a set of screen coordinates
- somewhere off the screen, such as cursor( 1, 25 ). The blinking
- hardware cursor will be hidden until another call is made to
- cursor() with parameters within the visible area of the screen.
- Take care, however, that you do not use any write to screen
- routines which write characters at the current cursor position
- while the cursor is not visible for obvious reasons.
-
- There are three cursor shape control functions. The first,
- cursor_type(), allows you to change the cursor to one of eight
- different sizes or to blank it entirely depending on the
- parameter passed to it. The other two, normal_cursor() and
- block_cursor() set the cursor to the two most commonly used
- shapes without the need to specify a parameter.
-
-
- Character Output
-
- Numerous routines are provided for writing characters to the
- screen.
-
- write_tty(), write_a(), and write_ac() write to the current
- cursor position. write_tty() uses the bios write_as_tty
- function and recognizes special characters like bell and
- backspace. write_ac() writes to the cursor position along with
- a video attribute and advances the cursor. write_a() does the
- same without advancing the cursor.
-
-
- page 6
-
- write_am() writes multiple copies of the same character along with
- a video attribute.
-
- write_al() writes a character and attribute to a specified screen
- location without regard for the current cursor location.
-
- String Output
-
- Like the character output routines, there are several string
- output routines available which allow writing strings to the
- screen beginning at either the current cursor position or a
- specified location.
-
- write_str() writes a string to screen beginning at the location
- specified, without regard for the cursor, using the supplied
- attribute. No special characters are supported however, this is
- the quickest routine.
-
- print_string() writes a string and attribute beginning at the
- current cursor position and supports the special characters '\n'
- '\t' and '\r'. This routine is somewhat slower than write_str()
- but much quicker than aprintf().
-
- aprintf() writes a formatted string to the screen using the
- specified attribute. All the printf() formatting codes and
- control characters are supported. In fact, because the
- sprintf() or vprintf() function in the standard library is
- called to do the formatting the only thing not supported is
- output redirection. Total string length is limited to 255
- characters, however.
-
- Screen Scrolling
-
- scroll() provides an easy way to scroll any part of the screen
- up or down. You supply the boundaries of the area to scroll, the
- direction to scroll, the number of lines to scroll, and the
- video attribute to use in filling the newly cleared area of the
- screen. Passing the routine a zero for the number of lines to
- scroll will result in the entire area being blanked and filled
- with the specified video attribute.
-
-
-
- page 7
-
- KEYBOARD
-
-
-
- Keyboard Routines
-
- The library's keyboard I/O routines are designed to allow you to
- easily interface a program to a computer that uses the IBM
- PC/XT/AT Extended Ascii format. A single call to key() is all
- that is required to get the next keystroke and uniquely identify
- it. This is possible because key() returns and integer value
- instead of a char value. Any returned value less than 256 (0x0100)
- is a normal keyboard character, control character or a value
- returned by using the ALT key in combination with the numeric
- keypad. If the returned value is 256 (0x0100) or higher, then one
- of the function or special keys has been pressed and it's extended
- code is in the upper two bytes. In most cases you need not be
- concerned with all of this as the return codes for most of the
- special keys are defined in the include file KEY.h. To determine
- if a particular key has been pressed, just compare the returned
- value with it's definition.
-
-
- Listing of KEY.H
-
- #define TAB 0x0009 #define SFTTAB 0x0f00
- #define RETURN 0x000d #define ALT_F4 0x6b00
- #define SPACE 0x0020 #define ALT_F5 0x6c00
- #define UP 0x4800 #define ALT_F6 0x6d00
- #define DOWN 0x5000 #define ALT_F7 0x6e00
- #define LEFT 0x4b00 #define ALT_F8 0x6f00
- #define RIGHT 0x4d00 #define ALT_F9 0x7000
- #define HOME 0x4700 #define ALT_F10 0x7100
- #define END 0x4f00 #define CNT_F1 0x5e00
- #define PGUP 0x4900 #define CNT_F2 0x5f00
- #define PGDN 0x5100 #define CNT_F3 0x6000
- #define F1 0x3b00 #define CNT_F4 0x6100
- #define F2 0x3c00 #define CNT_F5 0x6200
- #define F3 0x3d00 #define CNT_F6 0x6300
- #define F4 0x3e00 #define CNT_F7 0x6400
- #define F5 0x3f00 #define CNT_F8 0x6500
- #define F6 0x4000 #define CNT_F9 0x6600
- #define F7 0x4100 #define CNT_F10 0x6700
- #define F8 0x4200 #define SFT_F1 0x5400
- #define F9 0x4300 #define SFT_F2 0x5500
- #define F10 0x4400 #define SFT_F3 0x5600
- #define ESC 0x001b #define SFT_F4 0x5700
- #define BKSP 0x0008 #define SFT_F5 0x5800
- #define INS 0x5200 #define SFT_F6 0x5900
- #define DEL 0x5300 #define SFT_F7 0x5a00
- #define ALT_F1 0x6800 #define SFT_F8 0x5b00
- #define ALT_F2 0x6900 #define SFT_F9 0x5c00
- #define ALT_F3 0x6a00 #define SFT_F10 0x5d00
-
-
-
- page 8
-
- WINDOWS
-
-
-
- Turbo Library Windows
-
- The functions in TOOLS FOR C allow you to quickly create
- pop-up, overlapping windows for your own programs. The contents
- of the screen under each window is automatically saved when the
- window is opened and restored when it is closed. Windows can be
- moved around the screen. Overlaid windows can be brought to the
- front or closed. The routines will keep track of the saved video
- so that when the last window is closed, the original screen will
- be intact. Video attributes of the border and the center fill
- area can be specified. Cursor or text in a window can be made
- relative to the window position so that if you open a window in a
- new position any text written to the window will remain in the
- same place within the window. You can select any characters you
- like for the border. Any character can be specified to fill the
- area inside the window's borders.
-
- Creating windows
-
- All of the parameters necessary to open a window are found in a
- structure defined in TOOLS4C.H as a typedef "WNDW". Below is the
- listing as it appears in TOOLS4C.H with comments added.
-
- typedef struct WNDW {
- int left_col_line_char; /* The next eight lines */
- int upper_row_line_char; /* specify the characters */
- int right_col_line_char; /* to be used for lines */
- int lower_row_line_char; /* and corners of the */
- int ulcorner_char; /* border */
- int urcorner_char;
- int llcorner_char;
- int lrcorner_char;
- int fill_char; /* this char, normally a space, fills */
- /* the center of the window */
- int line_attr; /* this is the border video attribute */
- int fill_attr; /* this is the fill area video attrib. */
- int upper_row; /* The next four lines define the */
- int left_col; /* boundary of the window. These are */
- int lower_row; /* the columns and rows where the */
- int right_col; /* border will be placed */
- int curr_row; /* an area to store the cursor */
- int curr_col; /* position for your own use, they are */
- /* not used by the window functions */
- /* The remaining structure members are filled in by */
- /* the window management functions. You should define */
- /* them as zeros or NULLs, as appropriate. */
- int buf_size; /* size of the video buffer area */
- struct WNDW *prev_wndw; /* pointer to previous window */
- struct WNDW *next_wndw; /* pointer to next window */
- char *image; /* pointer to video buffer */
- } WNDW ;
-
-
- page 9
-
- To create a window, you need only to define a structure of type
- WNDW initialized to the window's desired parameters. You then
- call open_window() or open_ex_window() with the address of this
- window structure as an argument. See the example below.
-
-
- struct WNDW head1 ={' ',' ',' ',' ',' ',' ',' ',' ',
- ' ',0xF,0x70,15,1,79,10,0,0,0,NULL,NULL,NULL};
-
- /* The structure above defines a window with the upper left
- corner at 15,1 and the lower right corner at 79,10. The
- characters on the top line, just after the opening brace
- are the various border and corner characters. The
- blank space defined at the beginning of the first line
- is the character which will fill the interior of the
- window. 0xF is the border's video attribute. 0x70 is
- the window interior's video attribute. The next four
- integers define the window's location on the screen.
- The first two zeros are unused integer variables that
- are available for your use. The final zero integer and
- three NULLs must be defined as shown. These locations
- are filled in and manipulated by various window
- functions and should not be modified in any other way.
- */
-
- int ret_code;
-
- ret_code = open_window( &head1 );
-
- if(ret_code == ERROR)
- printf("Error opening Window\n");
-
-
- Alternatively, a pointer of type WNDW can be set equal to the
- address of the window structure. This pointer can then be used
- to call any of the window management functions which require the
- structure address.
-
-
- struct WNDW head1 ={' ',' ',' ',' ',' ',' ',' ',' ',
- ' ',0xF,0x70,15,1,79,10,0,0,0,NULL,NULL,NULL};
-
- int ret_code;
- WNDW *wind3;
-
- wind3 = &head1;
- ret_code = open_ex_window( wind3 );
-
- if(ret_code == ERROR)
- printf("Error opening Window\n");
-
- After attempting to open a window, the return code should be
-
-
-
- page 10
-
-
- checked to see if the window was successfully opened. OK, defined
- as zero in TOOLS4C.H is returned if successful, and ERROR, defined
- as -1 is returned if the routine was not able to allocate memory
- for the video buffer. The only limit on the number of windows
- which can be open is the memory available. No checking is done
- for bogus arguments in the structure definition.
-
- Menugen.Exe
-
- Included in the TOOLS FOR C package is a program - MENUGEN.EXE -
- which simplifies the definition of a window. The program allows
- you to "point and shoot" the borders of a window, then a series of
- menus allow you to select various border and fill characters and
- attributes and display them on the screen. When you are satisfied
- with the window, an output file is written which can be included
- in your program. A pointer to this window structure is also
- defined in the file, so all that is necessary is to call the open
- window routines with this pointer as an argument, and the same
- window which was displayed in MENUGEN will be opened. The window
- can be modified simply by changing any of the parameters in the
- include file structure.
-
- Window Management
-
- Once a window is open, it can be manipulated by the window
- management functions:
-
- clear_window() fill_window()
- activate() move_window()
- scroll_window() clear_wndw_title()
- title_window()
-
- and all of the window printing and cursor control functions. A
- short synopsis of most of the functions follows.
-
- clear_window()
-
- This function is simply a clear_screen for the currently
- active window. All the area inside the borders is changed to
- blank characters using the current fill attribute for the
- window.
-
- activate()
-
- All of the open windows are managed by a doubly linked list,
- with the currently active window being the last one in the
- chain. A window can be made the active window by calling
- activate() with the address of it's window structure as an
- argument. The window routines will bring that window to the
- top on the screen if any other windows are covering any part
- of it, and the linked list will be updated to show that
- window as being at the end of the list. A global WNDW
-
-
-
- page 11
-
- pointer, "last_wndw" will be updated to point to the new
- active window.
-
- title_window()
-
- Allows you to easily insert a title string into the border
- area of a window using any video attribute you like. It will
- automatically right or left justify or center the string in
- either the top or bottom border, depending on the
- justification code that you supply.
-
- clear_wndw_title()
-
- Removes any titles in either the top or bottom border of a
- window and restores the border characters and attributes as
- defined in the window structure.
-
- fill_window()
-
- fill_window() quickly redraws the interior of a window using
- the default fill character and attribute as defined in the
- window structure. This function provides an efficient means
- of clearing a window when something other than a space
- character is the fill character.
-
- move_window()
-
- Provides an easy way to move a window's position on the
- screen. Each call will move the window either left, up,
- right, or down the number of screen character positions
- supplied. The window will not, however, move past the point
- where one of the borders meets the edge of the screen.
-
- scroll_window()
-
- scrolls the area within the borders of the window either up
- or down, a specified number of lines. The area cleared by
- the scroll is filled with the current window fill attribute
- defined in the window structure.
-
- Closing Windows
-
- An open window can be closed at any time with a call to
- close_window() using the window structure address or a pointer to
- this address as an argument. In the example below assume
- that head1 is a structure of type WNDW.
-
-
- page 12
-
- int ret_code;
- WNDW *wind3;
-
- wind3 = &head1;
- ret_code = open_window( wind3 );
- if(ret_code)
- printf("\nError opening window\n");
-
- close_window( wind3 );
-
-
- If the window is not the active window, it is activated to bring
- it to the top of the list. The screen is restored and all the
- links binding the window to the list are deleted. Finally, the
- memory allocated to the video buffer is freed.
-
-
-
- page 13
- MENUS
-
-
- Creating Menus
-
- Menus, like windows, can easily be added to your programs simply
- by defining three structures and making a call to the menu
- executive function menu(). All of the information needed by
- menu() is in these three structures. The first is the WNDW
- structure that the menu will occupy. This is a standard window
- structure as described above in the section on windows and
- defines the video area and attributes of the menu. All screen
- references in the menu are relative to this window, so after a
- menu is defined, it can be moved around the screen simply by
- changing the window position. This structure is pointed to by
- the menu structure typedef MENU. MENU describes the cursor type
- and it's default video attributes, the menu title, the number of
- selections in the menu, pointers to default help and error
- functions, the help and exit hot keys, pointers to the menu
- window structure and an array of structures of typedef SEL.
- Struct SEL defines an individual menu selection. It contains a
- pointer to the selection text line. The starting column and row
- relative to the menu window where this text will be displayed.
- Video attributes for the selection, if something other than the
- default attributes are to be used. A pair of activate keys are
- defined which will call the selection without having to use the
- cursor. A pointer to a help function which you supply can be
- included to provide context sensitive help. Either a pointer to
- the function to be called or a text string to a program name to
- be executed must be provided. The other is set to a NULL.
- Finally an int value determines if the menu should be exited to
- it's caller after the called function returns or if another
- selection from the menu will be made available.
-
- Menugen
-
- As you may have deduced from the paragraph above, setting up a
- menu requires entering a lot of information into several complex
- structures. This would be a tedious task indeed were it not for
- the program MENUGEN. MENUGEN automates the process of setting
- up a menu, allowing you to interactively build the menu on
- screen, and when completed, it writes a header file containing
- all the necessary structures. Complete information on the
- running MENUGEN is included in the appendix.
-
- Menu Selections
-
- Selections can be made from the menu either by using the
- activate keys defined for each item in the SEL list or by using
- a bounce bar pseudo cursor. This cursor highlights the
- selection text with a different video attribute than the non
- selected text. The cursor is moved from item to item using the
- cursor keys. The next closest menu item in the direction indicated
- by the cursor arrow is selected. When the desired item is
- highlighted, pressing the return key runs it's function or
- program. If the operation to be performed when an item is
-
-
- page 14
-
- selected is a function, then the function call is made with the
- index of that item in the array of SEL structures as an
- argument. This way one function can be used to service several
- similar items, using the argument to determine which selection
- was made. Three types of pseudo cursors are supported. One
- highlights the area exactly as long as the selected item.
- Another highlights an area as long as the longest item in the
- SEL list. The last highlights the full length of the menu
- window. The int value pcursor_type in MENU determines which
- type is used and is decoded as follows:
-
- 0 == String length
- 1 == Max string length
- 2 == Full window length
-
-
- Error Handling
-
- All functions called by the menu routine must return an error
- code. If the call returns without error then a zero should be
- returned. If any other value is returned, then the error
- function pointed to in the MENU structure is called with that
- error code as an argument. You can then decode this value and
- take appropriate action. Pressing an undefined key while in the
- menu calls the error function with an error code of zero. This
- is usually handled simply by beeping the console speaker and
- returning.
-
-
- menu_text()
-
- A place is provided in the MENU structure for a pointer to a
- function which is called after the menu window is opened, and
- before the selections are written to the screen. This function
- can be used write descriptive text or otherwise embellish the
- menu's screen.
-
- Titling Menus
-
- A menu title can be defined which will written in the border of
- the menu's window. Any video attribute can be defined for the
- title and it can be either centered, left justified, or right
- justified in the top or bottom border. If the length of the
- title string is longer than width of the window, the text is
- truncated to fit. Positioning of the title is determined by the
- int value title_format in MENU as follows:
-
- 1 == Upper Left
- 2 == Upper Center
- 3 == Upper Right
- 4 == Lower Left
- 5 == Lower Center
- 6 == Lower Right
-
-
- page 15
-
-
- Menu Structures
-
- Below is a listing of the structures defined in the header menu.h
-
- typedef struct MENU {
- struct WNDW *menu_window; /* Pointer to the menu window structure */
- int default_non_select_att;/* Usually the same as window fill attr */
- int default_cursor_att; /* Attribute of items when selected */
- int title_format; /* Position of menu title on border(1-6)*/
- int window_title_att; /* Video attribute of menu title */
- char *window_title_text; /* Pointer to menu title text string */
- int pcursor_type; /* Type of selection cursor (0-2) */
- int exit_key; /* Hot key to exit menu, Usually ESC */
- int help_key; /* Hot key to call help function, if any*/
- int (*menu_text)(); /* Ptr to function to write text to scrn*/
- int (*error_fn)(); /* Ptr to user supplied error handler */
- struct SEL *sel_list; /* Ptr to the first in array of SELs */
- int num_sel; /* Number of menu selections */
- } MENU;
-
-
-
- typedef struct SEL{
- char *text; /* Pointer to item selection text string */
- int start_col; /* Starting col in window for text string */
- int start_row; /* Starting row in window for text string */
- int sel_att; /* Item sel video attr, Zero for default */
- int unsel_att; /* Item unselected video attribute or Zero*/
- int activate_key_1; /* First Activate hot key */
- int activate_key_2; /* Second Activate hot key */
- int (*do_function)(); /* Ptr to selected function or NULL */
- char *exe_call; /* Ptr to program name string or NULL */
- int (*help_function)(); /* Ptr to optional help fctn or NULL */
- int exit; /* exit menu after command, Zero if no */
- } SEL;
-
-
-
-
- page 16
- GLOBAL VARIABLES DEFINED IN TOOLS4C.LIB
-
-
-
- char *_vid_buf Is set by vid_type() to point to the segment
- of the video display buffer. It is
- initialized to point to the segment of a
- monochrome card. If the current video mode is
- something other than seven, this is changed to
- the segment of a color-graphics card. This
- value is used by a large number of the screen
- I/O routines.
-
- int _vid_type Is set by vid_type() to reflect what type of
- video card is being used. The current video
- mode is checked and if the mode is seven,
- _vid_type is set to zero. If any other mode is
- set, a color/graphics card is assumed and
- _vid_type is set to 1.
-
- int _color Is set by vid_type() to 1 if the current video
- mode is set to CO80. It is set to 0 if the
- mode is set to BW80 or MONO. This variable is
- used to select between color and monochrome
- video attributes.
-
- int _retrace Is also set by vid_type() to 1 if a
- color/graphics video board is being used to
- enable checking for retrace blanking. Many of
- the video routines will run much quicker if
- this is set to zero and you have a video card
- which allows accessing video memory without
- generating snow.
-
- char temp_str[256] This is a global data buffer used by many of
- the string handling routines. You can use
- this area as a temporary data buffer in your
- own routines as long as you do not make any
- calls to turbo.lib functions before you are
- finished with any data that you have stored
- there.
-
- int insert_flag This flag is toggled by the insert key when in
- get_field to switch between insert
- (insert_flag == 1) and over_write (insert_flag
- == 0) modes.
-
- WNDW *first_wndw Is a pointer to the first window structure in
- the linked list of open windows. If there are
- no windows open it is set to NULL.
-
- WNDW *last_wndw Is a pointer to the last window structure in
- the linked list of open windows. If there are
- no windows open it is set to NULL, otherwise
- it always points to the active window.
-
-
- page 17
-
-
-
-
-
-
-
-
- WARRANTY AND DISCLAIMER
-
-
-
- Before registration, there is no warranty whatsoever.
-
- After you register your copy of TOOLS FOR C, we offer
- you the same limited warranty most software developers
- offer. That is to say, with the exception of the
- physical media upon which you receive your software,
- there is no warranty ( within 90 days, we will replace
- any bad disks). We have done our best to provide a
- useful library of C functions, we let you try before
- you buy, and we give you the source code to the
- library. The complete responsibility for determining
- whether this library meets your needs, and ensuring
- that any programs developed using any of it's
- functions are bug free and will run as intended rests
- with you, the application programmer.
-
- That's it, That's all, There ain't no more.
-
-
-
- page 18
-
-
-
-
-
-
-
- INDEX
-
-
-
- activate() . . . . . (10) Move_window() . . . (11)
- Character Output . . ( 5) Open_ex_window() . . ( 9)
- clear_window() . . . (10) Open_window() . . . ( 9)
- close_window() . . . (11) Pseudo cursor() . . (13)
- Closing Windows . . (11) Screen Scrolling . . ( 9)
- Creating Menus . . . (13) scroll() . . . . . . ( 6)
- Creating Windows . . ( 8) String Output . . . ( 9)
- Curs() . . . . . . . ( 5) struct WNDW . . . . ( 8)
- Cursor() . . . . . . ( 5) struct MENU . . . . (15)
- Cursor Control . . . ( 5) struct SEL . . . . . (15)
- first_wndw . . . . . (16) Titling menus . . . (14)
- Get_cursor() . . . . ( 5) temp_str . . . . . . (16)
- GLOBAL VARIABLES . . (16) vid_type() . . . ( 4)(16)
- Identifier Length . ( 3) VIDEO . . . . . . . ( 4)
- insert_flag . . . . (16) Video Attributes . . ( 4)
- INTRODUCTION . . . . ( 3) Video Routines . . . ( 4)
- Key() . . . . . . . ( 7) WINDOWS . . . . . . ( 8)
- KEYBOARD . . . . . . ( 7) Window Management . (10)
- KEY.H . . . . . . . ( 7) _color . . . . . . . (16)
- last_wndw . . . . . (16) _retrace . . . . . . (16)
- Menu() . . . . . . . (13) _vid_buf . . . . . . (16)
- Menugen.Exe . . (10)(13) _vid_type . . . ( 4)(16)
- MENUS . . . . . . . (13)
-
-